/*
 * @Author: Guojian Wang 1085844536@qq.com
 * @Date: 2022-12-07 22:57:09
 * @LastEditTime: 2022-12-18 00:08:39
 * @LastEditors: Guojian Wang 1085844536@qq.com
 * @FilePath: \CloundMusic\pages\index\index.js
 * @Description:
 */
import request from '../../utils/request';

// pages/index/index.js
Page({
    /**
     * 页面的初始数据
     */
    data: {
        // 轮播图数据
        bannerList: [],
        // 推荐歌单
        recommendList: [],
        // 排行榜数据
        topList: [],
    },

    /**
     * 生命周期函数--监听页面加载
     */
    async onLoad(options) {
        let bannerListData = await request('/banner', { type: 2 });
        this.setData({
            bannerList: bannerListData.banners,
        });

        // 获取推荐歌单数据
        let recommendListData = await request('/personalized', { limit: 10 });
        this.setData({ recommendList: recommendListData.result });

        // 获取排行榜数据
        /**
         * 需求分析
         * 1.需要根据 idx 的值获取对应的数据
         * 2.idx 的取值范围是 0 - 20，我们需要 0 - 4
         * 3.我们需要发送 5 次请求
         */
        let topList = await request('/toplist');
        let index = 0;
        let resultArr = [];
        while (index < 5) {
            let topListId = topList.list[index++].id;
            let topListData = await request('/playlist/detail', {
                id: topListId,
            });
            let topListItem = {
                name: topListData.playlist.name,
                // splice(会修改原数组，可以对指定的数组进行增删改) slice(不会修改原数组)
                tracks: topListData.playlist.tracks.slice(0, 3),
            };
            resultArr.push(topListItem);
            // 不需要等待五次请求全部结束才更新，用户体验较好，但是渲染次数会多一些
            this.setData({
                topList: resultArr,
            });
        }

        // 更新 topList 的状态值,放在此处更新会导致发送请求的过程中，页面长时间白屏，用户体验差
        // this.setData({
        //     topList: resultArr,
        // });
    },

    toRecommendSong: function () {
        wx.navigateTo({
            url: '/songPackage/pages/recommendSong/recommendSong',
        });
    },

    /**
     * 跳转至 other 页面
     */
    toOther() {
        wx.navigateTo({
            url: '/otherPackage/pages/other/other',
        });
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {},

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {},

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {},

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {},

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {},

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {},

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {},
});
